package StringBuffer;

/**
 * StringBuffer  和    StringBuilder的使用
 *
 * 效率：StringBuilder>StringBuffer>String
 *
 * String 是不可变的字符序列，底层使用char[]数组存储
 * StringBuffer是可变的字符序列，线程安全的，底层使用char[]数组存储
 * StringBuilder可变的字符序列，线程不安全，底层使用char[]数组存储
 *
 * 增：append（xxx）
 * 删：delete(int start,int end)
 * 改：setCharAt(int n,char ch)/replace(int start,int end,string str)
 * 查：charAt(int n)
 * 插：insert(int start,xxx)
 * 长度：length()
 * 遍历：for()+charAt()/tostring
 *
 */
public class Demo1 {
    public static void main(String[] args) {
        StringBuffer sb1 = new StringBuffer("abc");
        sb1.setCharAt(0, 'm');
        System.out.println(sb1);//mbc
        // 在原来的字符串上修改，没有新建

        sb1.append(1);
        sb1.append("1");
        sb1.append('1');
        System.out.println(sb1);//mbc111
//        sb1.delete(0, 2);
//        System.out.println(sb1);//c111
//        sb1.replace(2, 3, "hello");
//        System.out.println(sb1);//c1hello1
//        sb1.insert(0, false);
//        System.out.println(sb1);//falsec1hello1
        sb1.reverse();
        System.out.println(sb1);//111cbm
        String s1 = sb1.substring(1, 3);//有返回值
        System.out.println(s1);//没有在原来的字符串上改动
        System.out.println(sb1);//创建了一个新的字符串
    }


}
